<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            background: red;
            display: block;
        }

        .box2 {
            width: 100px;
            height: 100px;
            background: blue;
            display: none;
        }

        .box3 {
            width: 100px;
            height: 100px;
            background: yellow;
            display: none;
        }
    </style>
</head>

<body>
    <div class="contaner1">
        <button>按钮一</button>
        <button>按钮二</button>
        <button>按钮三</button>
        <div class="box1">1</div>
        <div class="box2">2</div>
        <div class="box3">3</div>
    </div>
    <button class="next">下一页</button>

    <div class="contaner2">
        <button>按钮一</button>
        <button>按钮二</button>
        <button>按钮三</button>
        <div class="box1">1</div>
        <div class="box2">2</div>
        <div class="box3">3</div>
    </div>
    <script>
        // 面向对象：简单的程序 面向过程；
        // 面向对象：需求复杂(属性方法比较多) 涉及对象较多 。
        // 需求一：写一个选项卡；

        // 放所有选项卡的共性功能；
        // 每个选项卡特性功能放在外部；
        // 工厂模式
        // 每个选项卡共性的位置


        class Tab {
            constructor(btns,divs) {
                this.divs = divs;
                this.num = 0;  //加工原料
                var that = this;
                btns.forEach((btn, key) => {
                    btn.onclick = function () {
                        that.switchTab(key);
                        that.num = key;  //当前选项卡所在的位置的下标
                    }
                })
            }
            switchTab(key) {
                this.divs.forEach((div, index) => {
                    if (key == index) {
                        div.style.display = "block";
                    } else {
                        div.style.display = "none";
                    }
                })
            }
        }



        var btns1 = document.querySelectorAll(".contaner1 button");
        var divs1 = document.querySelectorAll(".contaner1 div");
        var tab1 = new Tab(btns1, divs1);

        // 实现第一个选项卡的下一页功能；
        // 第一个选项卡的特性功能；
        // 点击切换选项卡
        var btnnext = document.querySelector(".next");
        tab1.num++;
        btnnext.onclick = function () {
            console.log(tab1.num);
            tab1.switchTab(tab1.num);
            tab1.num++;
            if (tab1.num > 2) {
                tab1.num = 0;
            }
        }



        var btns2 = document.querySelectorAll(".contaner2 button");
        var divs2 = document.querySelectorAll(".contaner2 div");

        var tab2 = new Tab(btns2, divs2);
        // 自动切换
        tab2.num++;
        setInterval(() => {
            console.log(tab2.num);
            tab2.switchTab(tab2.num);
            tab2.num++;
            if (tab2.num > 2) {
                tab2.num = 0;
            }
        }, 1000);


        /*
            1.实现多个选项卡  且每个选项卡功能有区别 
            2.分析对象：选项卡对象
            3.分析选项卡对象的属性和方法 ：num属性1（选项卡现在位置的下标） divs属性2：选项卡需要切换的div
                                  方法：switchTab切换选项卡的方法；
            4.把选项卡对象抽象成类（把选项卡共性问题写在类里）  ，在组织逻辑
            5.实例化生成每一个选项卡  tab1  tab2
            6.针对于每个选项卡的特性功能在写具体的逻辑
        */



    </script>
</body>

</html>